﻿using System;
using System.Collections.Generic;
using WiMo.Games.Menus;
using WiMo.Games.Inputs;

namespace WiMo.Games
{
    public interface IGameEngine
    {
        bool EnableDiagnostics { get; set; }
        bool IsPaused { get; set; }
        Color DiagnosticsFontColor { get; set; }
        PointF DiagnosticsLocation { get; set; }
        ISpriteFont DefaultFont { get; set; }

        void Initialize(IGame game);
        void Start();
        void Exit();

        void Pause();
        void Resume();

        List<IGameComponent> Components { get; set; }
        IDisplay Display { get; set; }

        IAssetFactory AssetFactory { get; set; }
        IGame Game { get; }
        object GraphicsManager { get; }
        IAudioManager AudioManager { get; set; }
        IInputManager InputManager { get; set; }
        IContentManager ContentManager { get; set; }
        ICollisionManager CollisionManager { get; set; }
        IPhysicsManager PhysicsManager { get; set; }
        IMenuManager MenuManager { get; set; }
        IStateManager StateManager { get; set; }
        void RegisterComponent(IGameComponent component);
        void OnResize(Size bounds);
        Random Randomizer { get; }
        void Vibrate(int ms);
        void BeginVibrate();
        void EndVibrate();

        void StartHopper();
        void StopHopper();
    }
}
